import 'dart:io';

import 'log.dart';
import 'package:hive/hive.dart';
import 'package:path_provider/path_provider.dart';

class Data {
  static final Data _instance = Data._internal();
  factory Data() {
    return _instance;
  }

  // ignore: prefer_typing_uninitialized_variables
  var box;
  Data._internal() {
    //ko
  }

  // 初始化
  Future<void> init() async {
    var log = Log();
    try {
      if (box != null) {
        return;
      }
      // 异步初始化 Hive
      Directory dir = await getApplicationDocumentsDirectory();
      Hive.init("${dir.path}/data"); // 指定 Hive 数据存储路径
      // 打开或创建一个名为 'dataBox' 的盒子
      box = await Hive.openBox('data');
      log.info("Data 模块初始化完成");
    } catch (e) {
      log.error("Data 模块初始化失败: $e");
    }
  }

  // 获取本次运行存储的变量
  Future<dynamic> get(String name) async {
    try {
      await init();
      var res = box?.get(name); // 安全调用，避免空引用
      return res;
    } catch (e) {
      Log().error("Data 获取数据失败: $e");
      return null;
    }
  }

  // 保存本次运行存储的变量
  Future<dynamic> set(String name, value) async {
    try {
      await init();
      box?.put(name, value); // 安全调用，避免空引用
      return true;
    } catch (e) {
      Log().error("Data 保存数据失败: $e");
      return false;
    }
  }
}
